package com.igormaznitsa.sciareto.ui.editors;

import java.io.IOException;
import java.io.Reader;
import javax.swing.text.Segment;
import org.fife.ui.rsyntaxtextarea.AbstractJFlexCTokenMaker;
import org.fife.ui.rsyntaxtextarea.Token;
import org.fife.ui.rsyntaxtextarea.TokenImpl;


public class DotScriptTokenMaker extends AbstractJFlexCTokenMaker {

  /** This character denotes the end of file */
  public static final int YYEOF = -1;

  /** initial size of the lookahead buffer */
  private static final int ZZ_BUFFERSIZE = 16384;

  /** lexical states */
  public static final int EOL_COMMENT = 2;
  public static final int YYINITIAL = 0;
  public static final int MLC = 1;

  /** 
   * Translates characters to character classes
   */
  private static final String ZZ_CMAP_PACKED = 
    "\11\0\1\21\1\10\1\0\1\21\1\16\22\0\1\21\1\31\1\15"+
    "\1\17\1\20\1\31\1\31\1\7\2\32\1\23\1\33\1\31\1\27"+
    "\1\25\1\22\1\4\3\6\4\6\2\3\1\45\1\31\1\16\1\66"+
    "\1\65\1\31\1\17\1\51\1\5\1\55\1\53\1\26\1\41\1\56"+
    "\1\34\1\43\1\62\1\60\1\44\1\61\1\57\1\52\1\37\1\1"+
    "\1\47\1\40\1\35\1\12\1\64\1\46\1\24\1\63\1\54\1\32"+
    "\1\11\1\32\1\16\1\2\1\0\1\51\1\14\1\55\1\53\1\26"+
    "\1\42\1\56\1\70\1\43\1\62\1\60\1\44\1\61\1\13\1\52"+
    "\1\37\1\1\1\50\1\40\1\36\1\12\1\64\1\71\1\24\1\63"+
    "\1\54\1\30\1\67\1\30\1\31\uff81\0";

  /** 
   * Translates characters to character classes
   */
  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);

  /** 
   * Translates DFA states to action switch labels.
   */
  private static final int [] ZZ_ACTION = zzUnpackAction();

  private static final String ZZ_ACTION_PACKED_0 =
    "\3\0\2\1\2\2\1\1\1\3\2\1\1\4\1\5"+
    "\4\1\1\6\7\1\1\7\11\1\1\10\1\11\10\10"+
    "\1\12\6\10\1\0\1\13\1\0\2\13\5\1\2\4"+
    "\1\14\1\15\1\16\1\17\31\1\1\20\44\1\1\21"+
    "\3\10\2\0\1\10\2\0\3\10\2\0\1\10\3\0"+
    "\1\17\1\0\1\22\1\1\1\23\6\1\1\4\1\24"+
    "\1\4\40\1\1\23\32\1\1\23\20\1\3\10\2\0"+
    "\1\10\2\0\3\10\2\0\1\10\3\0\2\1\1\20"+
    "\1\1\1\4\1\1\1\20\15\1\1\20\4\1\1\23"+
    "\60\1\2\10\1\0\1\10\1\25\1\0\2\10\1\0"+
    "\1\10\1\26\2\0\4\1\1\4\20\1\1\20\6\1"+
    "\2\20\1\1\1\20\15\1\1\20\7\1\1\10\2\0"+
    "\1\10\3\0\1\1\1\4\24\1\1\20\51\1\1\20"+
    "\25\1";

  private static int [] zzUnpackAction() {
    int [] result = new int[488];
    int offset = 0;
    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackAction(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }


  /** 
   * Translates a state to a row index in the transition table
   */
  private static final int [] ZZ_ROWMAP = zzUnpackRowMap();

  private static final String ZZ_ROWMAP_PACKED_0 =
    "\0\0\0\72\0\164\0\256\0\350\0\u0122\0\u015c\0\u0196"+
    "\0\256\0\u01d0\0\u020a\0\u0244\0\u027e\0\u02b8\0\u02f2\0\u032c"+
    "\0\u0366\0\256\0\u03a0\0\u03da\0\u0414\0\u044e\0\u0488\0\u04c2"+
    "\0\u04fc\0\256\0\u0536\0\u0570\0\u05aa\0\u05e4\0\u061e\0\u0658"+
    "\0\u0692\0\u06cc\0\u0706\0\u0740\0\256\0\u077a\0\u07b4\0\u07ee"+
    "\0\u0828\0\u0862\0\u089c\0\u08d6\0\u0910\0\256\0\u094a\0\u0984"+
    "\0\u09be\0\u09f8\0\u0a32\0\u0a6c\0\u0aa6\0\u0ae0\0\u02f2\0\u0b1a"+
    "\0\u0b54\0\u0b8e\0\u0bc8\0\u0c02\0\u0c3c\0\u0c76\0\u0cb0\0\u0cea"+
    "\0\256\0\256\0\256\0\u0d24\0\u0d5e\0\u0d98\0\u0dd2\0\u0e0c"+
    "\0\u0e46\0\u0e80\0\u0eba\0\u0ef4\0\u0f2e\0\u0f68\0\u0fa2\0\u0fdc"+
    "\0\u1016\0\u1050\0\u108a\0\u10c4\0\u10fe\0\u1138\0\u1172\0\u11ac"+
    "\0\u11e6\0\u1220\0\u125a\0\u1294\0\u12ce\0\350\0\u1308\0\u1342"+
    "\0\u137c\0\u13b6\0\u13f0\0\u142a\0\u1464\0\u149e\0\u14d8\0\u1512"+
    "\0\u154c\0\u1586\0\u15c0\0\u15fa\0\u1634\0\u166e\0\u16a8\0\u16e2"+
    "\0\u171c\0\u1756\0\u1790\0\u17ca\0\u1804\0\u183e\0\u1878\0\u18b2"+
    "\0\u18ec\0\u1926\0\u1960\0\u199a\0\u19d4\0\u1a0e\0\u1a48\0\u1a82"+
    "\0\u1abc\0\u1af6\0\256\0\u1b30\0\u1b6a\0\u1ba4\0\u1bde\0\u1c18"+
    "\0\u1c52\0\u1c8c\0\u1cc6\0\u1d00\0\u1d3a\0\u1d74\0\u1dae\0\u1de8"+
    "\0\u1e22\0\u1e5c\0\u1e96\0\u1ed0\0\u1f0a\0\u1f44\0\u0b54\0\u1f7e"+
    "\0\350\0\u1fb8\0\u1ff2\0\u202c\0\u2066\0\u20a0\0\u20da\0\u2114"+
    "\0\256\0\u214e\0\u2188\0\u21c2\0\u21fc\0\u2236\0\u2270\0\u22aa"+
    "\0\u22e4\0\u231e\0\u2358\0\u2392\0\u23cc\0\u2406\0\u2440\0\u247a"+
    "\0\u24b4\0\u24ee\0\u2528\0\u2562\0\u259c\0\u25d6\0\u2610\0\u264a"+
    "\0\u2684\0\u26be\0\u26f8\0\u2732\0\u276c\0\u27a6\0\u27e0\0\u281a"+
    "\0\u2854\0\u288e\0\u28c8\0\u2902\0\u293c\0\u2976\0\u29b0\0\u29ea"+
    "\0\u2a24\0\u2a5e\0\u2a98\0\u2ad2\0\u2b0c\0\u2b46\0\u2b80\0\u2bba"+
    "\0\u2bf4\0\u2c2e\0\u2c68\0\u2ca2\0\u2cdc\0\u2d16\0\u2d50\0\u2d8a"+
    "\0\u2dc4\0\u2dfe\0\u2e38\0\u2e72\0\u2eac\0\u2ee6\0\u2f20\0\u2f5a"+
    "\0\u2f94\0\u2fce\0\u3008\0\u3042\0\u307c\0\u30b6\0\u30f0\0\u312a"+
    "\0\u3164\0\u319e\0\u31d8\0\u3212\0\u324c\0\u3286\0\u32c0\0\u32fa"+
    "\0\u3334\0\u336e\0\u33a8\0\u33e2\0\u341c\0\u3456\0\u3490\0\u34ca"+
    "\0\u3504\0\u353e\0\u3578\0\u35b2\0\u35ec\0\u3626\0\u3660\0\u369a"+
    "\0\u36d4\0\u370e\0\u3748\0\u3782\0\u37bc\0\u37f6\0\u3830\0\u386a"+
    "\0\u38a4\0\u38de\0\u3918\0\u3952\0\u398c\0\u39c6\0\u3a00\0\u3a3a"+
    "\0\u3a74\0\u3aae\0\u3ae8\0\u3b22\0\u3b5c\0\u3b96\0\u3bd0\0\u3c0a"+
    "\0\u3c44\0\u3c7e\0\u3cb8\0\u3cf2\0\u3d2c\0\u3d66\0\u3da0\0\u3dda"+
    "\0\u3e14\0\u3e4e\0\u3e88\0\u3ec2\0\u3efc\0\u3f36\0\u3f70\0\u3faa"+
    "\0\u3fe4\0\u401e\0\u4058\0\u4092\0\u40cc\0\u4106\0\u4140\0\u417a"+
    "\0\u41b4\0\u41ee\0\u4228\0\u4262\0\u429c\0\u42d6\0\u4310\0\u434a"+
    "\0\u4384\0\u43be\0\u43f8\0\u4432\0\u446c\0\u44a6\0\u44e0\0\u451a"+
    "\0\u4554\0\u458e\0\u45c8\0\u4602\0\u463c\0\u4676\0\u46b0\0\u46ea"+
    "\0\u4724\0\u475e\0\u4798\0\u47d2\0\u480c\0\u4846\0\u4880\0\u48ba"+
    "\0\u48f4\0\u492e\0\u4968\0\u49a2\0\u49dc\0\u4a16\0\u4a50\0\u4a8a"+
    "\0\u4ac4\0\u4afe\0\u4b38\0\u4b72\0\u4bac\0\u4be6\0\u4c20\0\u4c5a"+
    "\0\u4c94\0\u4cce\0\u4d08\0\u4d42\0\u4d7c\0\u4db6\0\u4df0\0\u4e2a"+
    "\0\u4e64\0\u4e9e\0\u4ed8\0\u4f12\0\u4f4c\0\u4f86\0\u4fc0\0\u4ffa"+
    "\0\u5034\0\u506e\0\u50a8\0\u50e2\0\u511c\0\u5156\0\u5190\0\u51ca"+
    "\0\u5204\0\u523e\0\u5278\0\u52b2\0\u52ec\0\u5326\0\u5360\0\u539a"+
    "\0\u53d4\0\u540e\0\u5448\0\u5482\0\u54bc\0\u54f6\0\u5530\0\u556a"+
    "\0\u55a4\0\u55de\0\u5618\0\u5652\0\u568c\0\u4846\0\u56c6\0\u5700"+
    "\0\u49a2\0\u573a\0\u5774\0\u57ae\0\u57e8\0\u5822\0\u585c\0\u5896"+
    "\0\u58d0\0\u590a\0\u5944\0\u597e\0\u59b8\0\u59f2\0\u5a2c\0\u5a66"+
    "\0\u5aa0\0\u5ada\0\u5b14\0\u5b4e\0\u5b88\0\u5bc2\0\u5bfc\0\u5c36"+
    "\0\u4ac4\0\u5c70\0\u5caa\0\u5ce4\0\u5d1e\0\u5d58\0\u5d92\0\u5dcc"+
    "\0\u5e06\0\u5e40\0\u5e7a\0\u5eb4\0\u5eee\0\u5f28\0\u5f62\0\u5f9c"+
    "\0\u5fd6\0\u6010\0\u604a\0\u6084\0\u60be\0\u60f8\0\u6132\0\u616c"+
    "\0\u61a6\0\u61e0\0\u621a\0\u6254\0\u628e\0\u62c8\0\u6302\0\u633c"+
    "\0\u6376\0\u63b0\0\u63ea\0\u6424\0\u645e\0\u6498\0\u64d2\0\u650c"+
    "\0\u6546\0\u6580\0\u3c0a\0\u65ba\0\u65f4\0\u662e\0\u6668\0\u66a2"+
    "\0\u66dc\0\u6716\0\u6750\0\u678a\0\u67c4\0\u67fe\0\u6838\0\u6872"+
    "\0\u68ac\0\u68e6\0\u6920\0\u695a\0\u6994\0\u69ce\0\u6a08\0\u6a42";

  private static int [] zzUnpackRowMap() {
    int [] result = new int[488];
    int offset = 0;
    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackRowMap(String packed, int offset, int [] result) {
    int i = 0;  /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int high = packed.charAt(i++) << 16;
      result[j++] = high | packed.charAt(i++);
    }
    return j;
  }

  /** 
   * The transition table of the DFA
   */
  private static final int [] ZZ_TRANS = zzUnpackTrans();

  private static final String ZZ_TRANS_PACKED_0 =
    "\1\4\2\5\1\6\1\7\1\10\1\6\1\4\1\11"+
    "\1\4\1\12\1\13\1\10\1\14\2\4\1\5\1\15"+
    "\1\16\1\4\1\5\1\17\1\20\1\21\1\22\1\4"+
    "\1\22\1\4\1\23\2\24\1\25\1\26\2\27\1\30"+
    "\1\31\1\32\1\33\2\34\1\35\1\36\1\37\1\5"+
    "\1\40\1\41\1\13\1\5\1\42\2\5\1\43\1\4"+
    "\2\32\1\23\1\33\10\44\1\45\12\44\1\46\10\44"+
    "\1\47\4\44\1\50\1\51\3\44\1\52\21\44\1\53"+
    "\1\54\10\55\1\56\23\55\1\57\4\55\1\60\1\61"+
    "\3\55\1\62\21\55\1\63\1\64\73\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\3\66\2\6"+
    "\1\66\1\6\2\0\4\66\2\0\2\66\3\0\1\66"+
    "\1\67\1\70\5\0\11\66\1\0\17\66\3\0\5\66"+
    "\2\6\1\66\1\6\2\0\4\66\2\0\2\66\3\0"+
    "\1\71\1\67\1\70\5\0\11\66\1\0\17\66\3\0"+
    "\2\66\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\3\5"+
    "\1\72\1\73\3\5\1\74\6\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\1\5\2\75\14\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\4\5\1\76\12\5\3\0\2\5\10\14\1\77\1\100"+
    "\3\14\1\101\54\14\21\0\1\15\72\0\1\102\1\103"+
    "\51\0\2\104\1\0\1\104\64\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\10\5\1\105\1\0\5\5\1\106\2\5\1\107\6\5"+
    "\3\0\2\5\27\0\1\32\35\0\1\32\5\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\110\5\0\11\5\1\0\1\5\2\111\1\5\1\112"+
    "\12\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\113\5\0\11\5"+
    "\1\0\1\5\2\114\1\115\1\116\12\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\117\5\0\10\5\1\120\1\0\3\5"+
    "\1\121\1\122\12\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\123"+
    "\5\0\1\124\2\125\1\126\3\5\1\127\1\5\1\0"+
    "\3\5\1\130\1\131\5\5\1\132\4\5\3\0\1\124"+
    "\1\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\7\5\1\133\1\5"+
    "\1\0\4\5\1\134\12\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\1\5\1\135\1\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\5\5\1\136"+
    "\1\5\1\137\1\5\1\135\1\5\1\140\3\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\1\141\2\142\6\5"+
    "\1\0\3\5\1\143\13\5\3\0\1\141\1\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\144\5\0\7\5\1\145\1\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\146\5\0\11\5\1\0"+
    "\3\5\1\147\1\150\12\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\1\151\2\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\4\5\1\152\4\5\1\0\1\5"+
    "\2\153\14\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\1\154\2\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\1\5\2\155\2\5\1\156\1\5"+
    "\1\157\7\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\160\5\0"+
    "\3\5\1\161\3\5\1\162\1\5\1\0\3\5\1\163"+
    "\1\164\12\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\1\165\2\5\3\0\1\5\3\0\1\5\1\0\1\166"+
    "\5\0\7\5\1\167\1\170\1\0\1\5\2\171\1\5"+
    "\1\172\12\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\1\5\2\173\14\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\4\5\1\174\2\5\1\175\1\5"+
    "\1\0\1\5\2\176\1\177\1\5\1\200\1\5\1\201"+
    "\7\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\113\5\0\7\5"+
    "\1\202\1\5\1\0\17\5\3\0\2\5\10\44\1\0"+
    "\12\44\1\0\16\44\1\0\25\44\24\0\1\203\47\0"+
    "\10\44\1\0\12\44\1\0\11\44\2\204\3\44\1\0"+
    "\25\44\2\0\10\44\1\0\12\44\1\0\11\44\2\205"+
    "\3\44\1\0\1\206\24\44\37\0\2\207\4\0\1\210"+
    "\26\0\10\44\1\0\12\44\1\0\16\44\1\0\3\44"+
    "\1\211\21\44\1\0\1\212\35\0\2\213\101\0\1\212"+
    "\22\0\1\212\10\55\1\0\31\55\1\0\25\55\2\0"+
    "\10\55\1\0\24\55\2\214\3\55\1\0\25\55\2\0"+
    "\10\55\1\0\24\55\2\215\3\55\1\0\1\216\24\55"+
    "\37\0\2\217\4\0\1\220\26\0\10\55\1\0\31\55"+
    "\1\0\3\55\1\221\21\55\1\0\1\222\35\0\2\223"+
    "\101\0\1\222\22\0\1\222\12\0\1\224\57\0\7\66"+
    "\2\0\4\66\2\0\2\66\3\0\1\66\1\0\1\66"+
    "\5\0\11\66\1\0\17\66\3\0\5\66\2\225\1\66"+
    "\1\225\2\0\4\66\2\0\2\66\3\0\1\66\1\0"+
    "\1\66\1\226\3\0\1\226\11\66\1\0\17\66\3\0"+
    "\5\66\4\227\2\0\3\66\1\227\2\0\2\66\3\0"+
    "\1\66\1\0\1\227\5\0\5\66\2\227\2\66\1\0"+
    "\3\66\1\227\1\66\1\227\1\66\1\227\7\66\3\0"+
    "\2\66\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\7\5"+
    "\1\230\7\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\231\1\0\1\5\5\0"+
    "\1\5\2\232\5\5\1\233\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\7\5\1\234"+
    "\7\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\10\5"+
    "\1\136\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\1\5\1\113\1\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\1\5\2\235\2\5"+
    "\1\236\3\5\1\113\2\5\1\237\2\5\3\0\2\5"+
    "\11\77\1\240\3\77\1\241\60\77\1\14\1\77\2\14"+
    "\1\0\1\14\1\242\3\14\20\77\1\14\3\77\1\14"+
    "\5\77\1\14\21\77\3\66\2\104\1\66\1\104\2\0"+
    "\4\66\2\0\2\66\3\0\1\66\1\0\1\70\5\0"+
    "\11\66\1\0\17\66\3\0\2\66\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\10\5\1\243\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\10\5\1\244\6\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\10\5\1\231\6\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\245\1\0\1\5"+
    "\5\0\7\5\1\246\1\5\1\0\3\5\1\247\13\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\250\5\0\11\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\1\251"+
    "\2\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\231"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\1\252\2\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\7\5\1\253\1\5\1\0\3\5"+
    "\1\254\13\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\7\5\1\255\1\5\1\0\1\5\2\256\14\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\4\5"+
    "\1\257\12\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\1\5\1\260\1\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\1\5\2\261\6\5\1\260"+
    "\5\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\3\5\1\262\13\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\1\5\2\263\5\5\1\264"+
    "\6\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\7\5"+
    "\1\265\1\266\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\3\5\1\267\13\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\3\5"+
    "\1\270\13\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\15\5\1\271\1\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\10\5\1\272\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\5\5"+
    "\1\273\1\274\10\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\13\5\1\275\3\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\10\5\1\276\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\277\5\0\11\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\300\1\0\1\5\5\0\10\5"+
    "\1\301\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\1\5\1\302\1\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\11\5\1\302\5\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\16\5\1\303\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\1\165\2\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\3\5\1\304\13\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\305\5\0\11\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\3\5\1\306\13\5\3\0\2\5\1\0\4\5\1\307"+
    "\1\5\2\0\1\65\1\5\1\310\1\307\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\11\5"+
    "\1\310\3\5\1\311\1\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\7\5\1\246\1\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\5\5"+
    "\1\312\11\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\7\5\1\313\1\314\6\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\1\5\1\315\1\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\1\5\2\316"+
    "\6\5\1\0\11\5\1\315\5\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\1\317\2\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\1\5\2\320\6\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\1\5"+
    "\2\321\6\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\3\5\1\322\5\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\1\5"+
    "\2\323\14\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\1\5\2\324\6\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\7\5\1\325\1\5\1\0\5\5"+
    "\1\326\11\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\4\5\1\327\12\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\1\5\2\245\6\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\7\5\1\330\7\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\7\5\1\136\1\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\4\5\1\331\4\5\1\0"+
    "\1\5\2\136\1\332\4\5\1\333\6\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\4\5\1\334\4\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\1\335"+
    "\2\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\1\5\2\336\6\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\1\5\2\337\14\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\1\5\1\340"+
    "\1\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\11\5\1\340\5\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\1\5\2\341\14\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\1\342\2\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\4\5\1\343\12\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\1\5\1\344\1\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\10\5\1\345\1\0"+
    "\11\5\1\344\1\5\1\346\3\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\3\5\1\347\1\350"+
    "\12\5\3\0\2\5\1\0\1\351\5\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\1\5\1\352\1\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\11\5\1\352\5\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\353\5\0\11\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\1\5\2\354\14\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\7\5\1\355\1\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\7\5\1\167\1\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\356\5\0"+
    "\11\5\1\0\17\5\3\0\2\5\10\44\1\0\12\44"+
    "\1\0\11\44\2\357\3\44\1\0\25\44\2\0\10\44"+
    "\1\0\12\44\1\0\13\44\1\360\2\44\1\0\25\44"+
    "\2\0\10\44\1\0\12\44\1\0\16\44\1\0\1\44"+
    "\1\361\23\44\41\0\1\362\76\0\1\363\25\0\10\44"+
    "\1\0\12\44\1\0\16\44\1\0\3\44\1\364\21\44"+
    "\1\0\1\365\46\0\1\365\22\0\1\365\35\0\2\366"+
    "\33\0\10\55\1\0\24\55\2\367\3\55\1\0\25\55"+
    "\2\0\10\55\1\0\26\55\1\370\2\55\1\0\25\55"+
    "\2\0\10\55\1\0\31\55\1\0\1\55\1\371\23\55"+
    "\41\0\1\372\76\0\1\373\25\0\10\55\1\0\31\55"+
    "\1\0\3\55\1\374\21\55\1\0\1\375\46\0\1\375"+
    "\22\0\1\375\35\0\2\376\36\0\4\377\5\0\1\377"+
    "\11\0\1\377\12\0\2\377\6\0\1\377\1\0\1\377"+
    "\1\0\1\377\14\0\3\66\2\225\1\66\1\225\2\0"+
    "\4\66\2\0\2\66\3\0\1\66\1\0\1\66\5\0"+
    "\11\66\1\0\17\66\3\0\2\66\3\0\2\225\1\0"+
    "\1\225\64\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\12\5"+
    "\1\231\4\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\1\231\10\5\1\0\17\5\3\0\1\231\1\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\5\5\1\231\11\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\4\5\1\u0100\12\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\13\5\1\u0101\3\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\u0102\5\0\11\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\u0103\2\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\17\5\3\0\2\5\10\77\1\0\64\77\4\u0104\2\77"+
    "\1\240\2\77\1\u0104\1\241\10\77\1\u0104\12\77\2\u0104"+
    "\6\77\1\u0104\1\77\1\u0104\1\77\1\u0104\14\77\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\7\5\1\u0105\1\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\u0106\5\0\11\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\3\5\1\u0107\13\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\10\5\1\u0108\6\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\5\5"+
    "\1\u0109\11\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\5\5\2\136\2\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\4\5\1\113\4\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\74\5\0\11\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\3\5"+
    "\1\u010a\5\5\1\0\3\5\1\u010b\13\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\3\5\1\u010c\5\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\10\5"+
    "\1\u010d\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\10\5\1\u010e\6\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\10\5\1\u010f\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\1\u0110\6\5\1\234\7\5\3\0\1\5\1\u0110\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\7\5\1\u0111\1\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\7\5\1\u0112"+
    "\1\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\3\5\1\u0113\13\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\u0114\5\0\11\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\5\1\327\1\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\11\5\1\327\5\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\15\5\1\u0107\1\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\1\5"+
    "\2\u0115\14\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\3\5\1\274\5\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\10\5\1\u0116\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\7\5\1\u0117\1\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\u0118\5\0"+
    "\11\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\136"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\u0119\5\0\3\5\1\u011a\5\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\7\5\1\233\1\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\1\136\16\5\3\0\1\5\1\136\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\u011b\5\0\11\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\10\5\1\u011c\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\1\5\2\u011d"+
    "\6\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\1\u011e\2\u011f\4\5\1\u0120\1\5\1\0\4\5"+
    "\1\u0121\1\156\11\5\3\0\1\u011e\1\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\10\5\1\u0122\6\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\3\5"+
    "\1\u0123\13\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\7\5\1\75\1\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\u0124\5\0\11\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\5\5\1\u0125"+
    "\11\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\u0126\5\0\11\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\1\5\2\u0127\6\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\4\5\1\u0128\12\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\1\u0129\2\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\12\5\1\u012a\4\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\7\5\1\u012b\1\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\1\5\1\u012c"+
    "\1\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\11\5\1\u012c\5\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\3\5\1\u012d\13\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\4\5\1\231\12\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\u012e"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\4\5\1\u012f\12\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\3\5\1\u0130\5\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\u0131\5\0"+
    "\11\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\u0132"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\1\5\2\231\6\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\4\5"+
    "\1\u0133\12\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\1\5\2\u0134\6\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\10\5\1\u0135\2\5"+
    "\1\u0136\3\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\1\5\2\u0137\14\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\1\u0138\10\5\1\0\17\5\3\0"+
    "\1\u0138\1\5\1\0\4\5\1\u0139\1\5\2\0\1\65"+
    "\2\5\1\u0139\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\1\5\2\u0138\6\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\16\5"+
    "\1\113\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\1\5"+
    "\2\u013a\6\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\7\5\1\u013b\7\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\4\5\1\u013c\4\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\1\231\16\5\3\0\1\5\1\231\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\4\5\1\u013d\4\5\1\0\7\5"+
    "\1\u013e\7\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\4\5\1\u013f\12\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\3\5\1\u0140\5\5\1\0\13\5"+
    "\1\u0141\3\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\3\5\1\u0127\5\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\1\u0142\2\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\u0143\2\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\7\5"+
    "\1\u0144\1\u0145\1\0\5\5\1\u0146\11\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\7\5\1\313"+
    "\7\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\10\5\1\u0147\6\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\3\5\1\u0148\13\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\1\u0149"+
    "\16\5\3\0\1\5\1\u0149\10\44\1\0\12\44\1\0"+
    "\13\44\1\u014a\2\44\1\0\25\44\2\0\10\44\1\0"+
    "\12\44\1\0\16\44\1\0\2\44\1\u014b\22\44\2\0"+
    "\10\44\1\0\12\44\1\0\2\44\1\360\13\44\1\0"+
    "\25\44\47\0\1\u014c\52\0\1\362\43\0\10\44\1\0"+
    "\12\44\1\0\1\44\1\u014d\14\44\1\0\25\44\27\0"+
    "\1\u014e\103\0\1\u014f\32\0\10\55\1\0\26\55\1\u0150"+
    "\2\55\1\0\25\55\2\0\10\55\1\0\31\55\1\0"+
    "\2\55\1\u0151\22\55\2\0\10\55\1\0\15\55\1\370"+
    "\13\55\1\0\25\55\47\0\1\u0152\52\0\1\372\43\0"+
    "\10\55\1\0\14\55\1\u0153\14\55\1\0\25\55\27\0"+
    "\1\u0154\103\0\1\u0155\35\0\4\u0156\5\0\1\u0156\11\0"+
    "\1\u0156\12\0\2\u0156\6\0\1\u0156\1\0\1\u0156\1\0"+
    "\1\u0156\15\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\10\5\1\u0157\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\3\5\1\u0158\13\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\4\5\1\u0159\4\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\4\5\1\u015a\4\5"+
    "\1\0\17\5\3\0\2\5\3\77\4\u015b\2\77\1\240"+
    "\2\77\1\u015b\1\241\10\77\1\u015b\12\77\2\u015b\6\77"+
    "\1\u015b\1\77\1\u015b\1\77\1\u015b\14\77\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\3\5\1\251\5\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\12\2\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\1\5\2\u015c"+
    "\6\5\1\0\1\5\2\111\14\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\10\5\1\u015d\6\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\1\u015e\10\5"+
    "\1\0\17\5\3\0\1\u015e\1\5\1\0\6\5\2\0"+
    "\1\65\1\12\2\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\1\5\2\u015c\1\u015f\4\5\1\u0160\1\0"+
    "\1\5\2\111\4\5\1\u0161\7\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\10\5\1\u0162\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\5\1\u0163\1\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\11\5\1\u0163\5\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\u0164\5\0\11\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\1\u0165\2\u015c\1\u015f\4\5\1\u0160"+
    "\1\0\7\5\1\u0161\7\5\3\0\1\u0165\1\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\u015e\5\0\11\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\1\5\2\u0166\6\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\7\5"+
    "\1\145\1\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\3\5\1\u0167\5\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\5\1\u0168\1\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\11\5\1\u0168\5\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\10\5\1\u0169\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\5\5\1\u016a"+
    "\11\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\7\5\1\u016b\7\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\u016c\5\0\11\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\1\5\1\273\1\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\11\5"+
    "\1\273\5\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\4\5\1\136\4\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\1\141\2\142\6\5\1\0\17\5"+
    "\3\0\1\141\1\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\10\5"+
    "\1\u016d\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\5\5\1\u016e\11\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\233\5\0\11\5\1\0\7\5\1\234"+
    "\7\5\3\0\2\5\1\0\6\5\2\0\1\65\1\5"+
    "\1\u016f\1\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\3\5\1\u0170\1\u0171\4\5\1\0\7\5\1\234"+
    "\1\5\1\u016f\5\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\4\5\1\112\12\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\1\5\2\u0172"+
    "\14\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\4\5"+
    "\1\231\4\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\5\5\1\156\11\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\u0173\5\0\11\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\5\5\1\136\11\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\10\5\1\u0174\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\4\5\1\u0175\4\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\1\5\2\u0176\14\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\1\136\10\5\1\0\17\5\3\0\1\136\1\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\1\5\2\233"+
    "\14\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\10\5"+
    "\1\u0177\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\4\5\1\u0159\4\5\1\0\5\5\1\u016a\11\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\4\5\1\136\12\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\5\5\1\u0138\11\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\1\5\2\274\6\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\7\5\1\u015e\7\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\1\u0178\16\5\3\0\1\5"+
    "\1\u0178\1\0\6\5\2\0\1\65\1\u0179\2\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\1\5"+
    "\1\u017a\1\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\11\5\1\u017a\5\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\1\5\2\u017b"+
    "\14\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\1\5\2\320\14\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\4\5\1\u017c\12\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\4\5"+
    "\1\u017d\12\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\4\5\1\u017e\12\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\3\5\1\347\13\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\233\5\0\11\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\10\5"+
    "\1\u017f\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\u0180"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\10\5\1\113\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\1\5\2\u0181\6\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\1\5"+
    "\2\u0182\6\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\u0183\5\0\11\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\1\5\2\u0184\14\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\1\5\2\u0185\1\5\1\u0186\12\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\u0187\5\0\11\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\3\5\1\136\5\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\3\5\1\u0188\13\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\13\5\1\u0189\3\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\u018a\5\0\11\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\7\5\1\u018b"+
    "\1\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\7\5\1\u018a\1\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\13\5\1\u0136"+
    "\3\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\3\5"+
    "\1\u015f\5\5\1\0\17\5\3\0\2\5\10\44\1\0"+
    "\12\44\1\0\14\44\1\360\1\44\1\0\2\44\1\u014b"+
    "\22\44\2\0\10\44\1\0\11\44\1\u018c\1\0\16\44"+
    "\1\0\25\44\24\0\1\u018d\47\0\1\44\7\u014d\1\0"+
    "\1\44\3\u014d\2\44\2\u014d\1\44\1\u014d\1\u018e\4\u014d"+
    "\1\44\11\u014d\1\u014e\22\u014d\1\44\1\u014d\1\44\2\u014e"+
    "\1\0\1\u014e\1\u018e\4\u014e\1\u018e\2\0\3\u014e\2\0"+
    "\1\u018e\1\u014e\1\0\1\u014e\1\u018e\1\u014e\1\u018e\1\u014e"+
    "\1\u018e\1\0\3\u018e\11\u014e\1\u018e\17\u014e\1\0\1\u018e"+
    "\1\0\2\u014e\40\0\1\362\4\0\1\u014c\24\0\10\55"+
    "\1\0\27\55\1\370\1\55\1\0\2\55\1\u0151\22\55"+
    "\2\0\10\55\1\0\11\55\1\u018f\17\55\1\0\25\55"+
    "\24\0\1\u0190\47\0\1\55\7\u0153\1\0\1\55\3\u0153"+
    "\2\55\2\u0153\1\55\6\u0153\1\55\11\u0153\1\u0154\22\u0153"+
    "\1\55\1\u0153\1\55\2\u0154\1\0\1\u0154\1\u0191\4\u0154"+
    "\1\u0191\2\0\3\u0154\2\0\1\u0191\1\u0154\1\0\1\u0154"+
    "\1\u0191\1\u0154\1\u0191\1\u0154\1\u0191\1\0\3\u0191\11\u0154"+
    "\1\u0191\17\u0154\1\0\1\u0191\1\0\2\u0154\40\0\1\372"+
    "\4\0\1\u0152\27\0\4\u0192\5\0\1\u0192\11\0\1\u0192"+
    "\12\0\2\u0192\6\0\1\u0192\1\0\1\u0192\1\0\1\u0192"+
    "\15\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\4\5\1\u0180"+
    "\12\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\10\5"+
    "\1\231\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\u0142"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\1\5\2\u0193\6\5\1\0\17\5\3\0"+
    "\2\5\3\77\4\u0194\2\77\1\240\2\77\1\u0194\1\241"+
    "\10\77\1\u0194\12\77\2\u0194\6\77\1\u0194\1\77\1\u0194"+
    "\1\77\1\u0194\14\77\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\3\5\1\u0195\1\116\12\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\4\5\1\u0196\12\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\1\5\2\136"+
    "\6\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\4\5\1\u0197\12\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\3\5\1\u0198"+
    "\13\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\10\5"+
    "\1\u0166\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\u0199"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\10\5\1\u013b\6\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\6\5"+
    "\1\u019a\10\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\1\5\2\111\14\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\7\5\1\u0142\1\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\1\u019b\10\5"+
    "\1\0\17\5\3\0\1\u019b\1\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\1\5\2\u019c\6\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\10\5\1\u019d\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\7\5\1\u0180"+
    "\1\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\1\u016e\10\5\1\0\17\5\3\0\1\u016e\1\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\4\5\1\u019e\4\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\u019f\5\0\11\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\4\5\1\u0171\4\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\3\5\1\u01a0\13\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\3\5\1\312\13\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\7\5\1\u01a1\1\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\7\5\1\u01a2\1\5\1\0"+
    "\3\5\1\254\13\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\4\5\1\u01a3\4\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\1\12\2\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\1\u0165\2\u015c\2\5"+
    "\2\u01a4\1\5\1\u01a5\1\0\3\5\1\u01a6\1\5\1\u01a7"+
    "\6\5\1\u01a8\2\5\3\0\1\u0165\1\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\7\5\1\124\7\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\4\5\1\u01a9\4\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\3\5\1\u0180\13\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\1\141\2\142\1\5\1\u0171\4\5"+
    "\1\0\17\5\3\0\1\141\1\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\1\5\2\u01aa\6\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\1\5\2\u01ab\6\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\7\5"+
    "\1\u01ac\1\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\1\5\2\u01ad\14\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\5\1\u01ae\1\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\11\5\1\u01ae\5\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\1\5\1\233\1\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\11\5\1\233"+
    "\5\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\u01af\5\0\11\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\1\5\2\136\14\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\u01b0\5\0\11\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\1\5\2\u01b1"+
    "\14\5\3\0\2\5\1\0\6\5\2\0\1\65\1\5"+
    "\1\u01b2\1\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\11\5\1\u01b2\5\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\4\5\1\u01b3\4\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\u01b4\5\0\11\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\1\u01b5\2\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\1\5\1\u015e\1\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\11\5\1\u015e"+
    "\5\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\1\5\2\113\14\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\7\5\1\u01b6\1\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\5\1\136\1\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\11\5\1\136\5\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\4\5\1\u015e\4\5\1\0\17\5\3\0"+
    "\2\5\10\44\1\0\11\44\1\u014d\1\0\16\44\1\0"+
    "\25\44\24\0\1\u014e\47\0\10\55\1\0\11\55\1\u0153"+
    "\17\55\1\0\25\55\24\0\1\u0154\52\0\4\5\5\0"+
    "\1\5\11\0\1\5\12\0\2\5\6\0\1\5\1\0"+
    "\1\5\1\0\1\5\15\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\7\5"+
    "\1\u01b7\1\5\1\0\17\5\3\0\2\5\3\77\4\14"+
    "\2\77\1\240\2\77\1\14\1\241\10\77\1\14\12\77"+
    "\2\14\6\77\1\14\1\77\1\14\1\77\1\14\14\77"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\1\5\2\256"+
    "\14\5\3\0\2\5\1\0\6\5\2\0\1\65\1\5"+
    "\1\231\1\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\11\5\1\231\5\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\1\5\2\u015e"+
    "\14\5\3\0\2\5\1\0\4\5\1\u01b8\1\5\2\0"+
    "\1\65\2\5\1\u01b8\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\4\5\1\u01b9\12\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\7\5\1\u01ba"+
    "\1\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\u01bb"+
    "\5\0\11\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\u01bc\5\0\11\5\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\u01bd\5\0\11\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\1\u01be\10\5\1\0\17\5"+
    "\3\0\1\u01be\1\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\3\5"+
    "\1\u01bf\5\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\13\5\1\u01c0\3\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\6\5"+
    "\1\274\10\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\3\5\1\u010b\13\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\7\5\1\u01c1\7\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\10\5\1\u01c2"+
    "\1\0\4\5\1\u01c3\12\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\4\5\1\u01c4\12\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\5\1\u01c5\1\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\11\5\1\u01c5\5\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\7\5\1\u01c6\1\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\u018b\2\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\4\5\1\u01c7\12\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\3\5\1\u01ad\13\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\1\5\1\u01c8\1\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\11\5\1\u01c8\5\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\1\5\2\u01c9\6\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\3\5"+
    "\1\u01ca\13\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\4\5\1\u01b9\2\5\1\201\7\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\1\5"+
    "\2\u01cb\14\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\3\5\1\u01cc\13\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\1\5\2\u0133\6\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\7\5\1\u01cd\7\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\4\5\1\u0120\4\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\1\5\1\u0123\1\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\11\5\1\u0123\5\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\6\5\1\u01ab\10\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\5\5\2\u01ce\2\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\75\5\0\11\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\7\5\1\157\7\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\1\u01cf\2\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\1\5"+
    "\2\u01d0\14\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\327\1\0\1\5\5\0"+
    "\11\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\10\5\1\u01d1\1\0\17\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\u010e\5\0\11\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\4\5\1\u01d2"+
    "\12\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\u01d3\5\0\11\5"+
    "\1\0\17\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\3\5\1\u01d4\13\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\4\5\1\u01d5\12\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\1\5\1\u01d6"+
    "\1\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\11\5\1\u01d6\5\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\7\5\1\136\7\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\10\5\1\u01d4\6\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\4\5\1\u01d7\4\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\1\5\2\u01d8"+
    "\14\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\10\5\1\136\6\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\7\5\1\u01d9\1\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\10\5\1\u0120\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\11\5"+
    "\1\0\1\5\2\u01da\14\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\7\5\1\u0187\1\5\1\0\17\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\1\u01db\10\5\1\0"+
    "\17\5\3\0\1\u01db\1\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\15\5\1\136\1\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\13\5\1\231\3\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\7\5\1\273"+
    "\1\5\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\4\5\1\u01dc\12\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\7\5\1\u01dd\1\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\10\5"+
    "\1\274\1\0\17\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\3\5\1\u015e\13\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\1\5\2\u01de\6\5\1\0"+
    "\17\5\3\0\2\5\1\0\6\5\2\0\1\65\3\5"+
    "\3\0\1\5\3\0\1\5\1\0\1\5\5\0\1\5"+
    "\2\u01df\6\5\1\0\17\5\3\0\2\5\1\0\6\5"+
    "\2\0\1\65\3\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\5\5\1\u013a\11\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\4\5"+
    "\1\u018a\12\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\3\5\1\u01e0\13\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\u01e1\5\0\11\5\1\0\17\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\10\5\1\u01e2"+
    "\6\5\3\0\2\5\1\0\6\5\2\0\1\65\1\5"+
    "\1\u01e3\1\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\11\5\1\u01e3\5\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\1\5\1\u01e4\1\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\4\5\1\u0171"+
    "\4\5\1\0\7\5\1\234\1\5\1\u01e4\5\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\3\5"+
    "\1\u01e5\13\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\1\5\1\u01e6\1\5\3\0\1\5\3\0\1\5\1\0"+
    "\1\5\5\0\11\5\1\0\11\5\1\u01e6\5\5\3\0"+
    "\2\5\1\0\6\5\2\0\1\65\3\5\3\0\1\5"+
    "\3\0\1\5\1\0\1\5\5\0\11\5\1\0\13\5"+
    "\1\274\3\5\3\0\2\5\1\0\6\5\2\0\1\65"+
    "\3\5\3\0\1\5\3\0\1\5\1\0\1\5\5\0"+
    "\11\5\1\0\1\5\2\u01e7\14\5\3\0\2\5\1\0"+
    "\6\5\2\0\1\65\3\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\1\5\2\u0118\6\5\1\0\17\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\3\5\1\u01e1\13\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\1\5\1\u01e8\1\5\3\0\1\5\3\0\1\5"+
    "\1\0\1\5\5\0\11\5\1\0\11\5\1\u01e8\5\5"+
    "\3\0\2\5\1\0\6\5\2\0\1\65\3\5\3\0"+
    "\1\5\3\0\1\5\1\0\1\5\5\0\11\5\1\0"+
    "\12\5\1\136\4\5\3\0\2\5\1\0\6\5\2\0"+
    "\1\65\3\5\3\0\1\5\3\0\1\5\1\0\1\5"+
    "\5\0\11\5\1\0\3\5\1\u01cf\13\5\3\0\2\5"+
    "\1\0\6\5\2\0\1\65\3\5\3\0\1\5\3\0"+
    "\1\5\1\0\1\5\5\0\11\5\1\0\7\5\1\274"+
    "\7\5\3\0\2\5";

  private static int [] zzUnpackTrans() {
    int [] result = new int[27260];
    int offset = 0;
    offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackTrans(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      value--;
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }


  /* error codes */
  private static final int ZZ_UNKNOWN_ERROR = 0;
  private static final int ZZ_NO_MATCH = 1;
  private static final int ZZ_PUSHBACK_2BIG = 2;

  /* error messages for the codes above */
  private static final String ZZ_ERROR_MSG[] = {
    "Unkown internal scanner error",
    "Error: could not match input",
    "Error: pushback value was too large"
  };

  /**
   * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
   */
  private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();

  private static final String ZZ_ATTRIBUTE_PACKED_0 =
    "\3\0\1\11\4\1\1\11\10\1\1\11\7\1\1\11"+
    "\12\1\1\11\10\1\1\11\6\1\1\0\1\1\1\0"+
    "\11\1\3\11\77\1\1\11\3\1\2\0\1\1\2\0"+
    "\3\1\2\0\1\1\3\0\1\1\1\0\12\1\1\11"+
    "\120\1\2\0\1\1\2\0\3\1\2\0\1\1\3\0"+
    "\114\1\1\0\2\1\1\0\2\1\1\0\2\1\2\0"+
    "\66\1\2\0\1\1\3\0\126\1";

  private static int [] zzUnpackAttribute() {
    int [] result = new int[488];
    int offset = 0;
    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpackAttribute(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }

  /** the input device */
  private java.io.Reader zzReader;

  /** the current state of the DFA */
  private int zzState;

  /** the current lexical state */
  private int zzLexicalState = YYINITIAL;

  /** this buffer contains the current text to be matched and is
      the source of the yytext() string */
  private char zzBuffer[];

  /** the textposition at the last accepting state */
  private int zzMarkedPos;

  /** the textposition at the last state to be included in yytext */
  private int zzPushbackPos;

  /** the current text position in the buffer */
  private int zzCurrentPos;

  /** startRead marks the beginning of the yytext() string in the buffer */
  private int zzStartRead;

  /** endRead marks the last character in the buffer, that has been read
      from input */
  private int zzEndRead;

  /** number of newlines encountered up to the start of the matched text */
  private int yyline;

  /** the number of characters up to the start of the matched text */
  private int yychar;

  /**
   * the number of characters from the last newline up to the start of the 
   * matched text
   */
  private int yycolumn;

  /** 
   * zzAtBOL == true <=> the scanner is currently at the beginning of a line
   */
  private boolean zzAtBOL = true;

  /** zzAtEOF == true <=> the scanner is at the EOF */
  private boolean zzAtEOF;

  /* user code: */


	/**
	 * Constructor.  This must be here because JFlex does not generate a
	 * no-parameter constructor.
	 */
	public DotScriptTokenMaker() {
	}


	/**
	 * Adds the token specified to the current linked list of tokens.
	 *
	 * @param tokenType The token's type.
	 * @see #addToken(int, int, int)
	 */
	private void addHyperlinkToken(int start, int end, int tokenType) {
		int so = start + offsetShift;
		addToken(zzBuffer, start,end, tokenType, so, true);
	}


	/**
	 * Adds the token specified to the current linked list of tokens.
	 *
	 * @param tokenType The token's type.
	 */
	private void addToken(int tokenType) {
		addToken(zzStartRead, zzMarkedPos-1, tokenType);
	}


	/**
	 * Adds the token specified to the current linked list of tokens.
	 *
	 * @param tokenType The token's type.
	 * @see #addHyperlinkToken(int, int, int)
	 */
	private void addToken(int start, int end, int tokenType) {
		int so = start + offsetShift;
		addToken(zzBuffer, start,end, tokenType, so, false);
	}


	/**
	 * Adds the token specified to the current linked list of tokens.
	 *
	 * @param array The character array.
	 * @param start The starting offset in the array.
	 * @param end The ending offset in the array.
	 * @param tokenType The token's type.
	 * @param startOffset The offset in the document at which this token
	 *        occurs.
	 * @param hyperlink Whether this token is a hyperlink.
	 */
	public void addToken(char[] array, int start, int end, int tokenType,
						int startOffset, boolean hyperlink) {
		super.addToken(array, start,end, tokenType, startOffset, hyperlink);
		zzStartRead = zzMarkedPos;
	}


	/**
	 * {@inheritDoc}
	 */
	public String[] getLineCommentStartAndEnd(int languageIndex) {
		return new String[] { "//", null };
	}


	/**
	 * Returns the first token in the linked list of tokens generated
	 * from <code>text</code>.  This method must be implemented by
	 * subclasses so they can correctly implement syntax highlighting.
	 *
	 * @param text The text from which to get tokens.
	 * @param initialTokenType The token type we should start with.
	 * @param startOffset The offset into the document at which
	 *        <code>text</code> starts.
	 * @return The first <code>Token</code> in a linked list representing
	 *         the syntax highlighted text.
	 */
	public Token getTokenList(Segment text, int initialTokenType, int startOffset) {

		resetTokenList();
		this.offsetShift = -text.offset + startOffset;

		// Start off in the proper state.
		int state = Token.NULL;
		switch (initialTokenType) {
						case Token.COMMENT_MULTILINE:
				state = MLC;
				start = text.offset;
				break;

			/* No documentation comments */
			default:
				state = Token.NULL;
		}

		s = text;
		try {
			yyreset(zzReader);
			yybegin(state);
			return yylex();
		} catch (IOException ioe) {
			ioe.printStackTrace();
			return new TokenImpl();
		}

	}


	/**
	 * Refills the input buffer.
	 *
	 * @return      <code>true</code> if EOF was reached, otherwise
	 *              <code>false</code>.
	 */
	private boolean zzRefill() {
		return zzCurrentPos>=s.offset+s.count;
	}


	/**
	 * Resets the scanner to read from a new input stream.
	 * Does not close the old reader.
	 *
	 * All internal variables are reset, the old input stream 
	 * <b>cannot</b> be reused (internal buffer is discarded and lost).
	 * Lexical state is set to <tt>YY_INITIAL</tt>.
	 *
	 * @param reader   the new input stream 
	 */
	public final void yyreset(Reader reader) {
		// 's' has been updated.
		zzBuffer = s.array;
		/*
		 * We replaced the line below with the two below it because zzRefill
		 * no longer "refills" the buffer (since the way we do it, it's always
		 * "full" the first time through, since it points to the segment's
		 * array).  So, we assign zzEndRead here.
		 */
		//zzStartRead = zzEndRead = s.offset;
		zzStartRead = s.offset;
		zzEndRead = zzStartRead + s.count - 1;
		zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset;
		zzLexicalState = YYINITIAL;
		zzReader = reader;
		zzAtBOL  = true;
		zzAtEOF  = false;
	}




  /**
   * Creates a new scanner
   * There is also a java.io.InputStream version of this constructor.
   *
   * @param   in  the java.io.Reader to read input from.
   */
  public DotScriptTokenMaker(java.io.Reader in) {
    this.zzReader = in;
  }

  /**
   * Creates a new scanner.
   * There is also java.io.Reader version of this constructor.
   *
   * @param   in  the java.io.Inputstream to read input from.
   */
  public DotScriptTokenMaker(java.io.InputStream in) {
    this(new java.io.InputStreamReader(in));
  }

  /** 
   * Unpacks the compressed character translation table.
   *
   * @param packed   the packed character translation table
   * @return         the unpacked character translation table
   */
  private static char [] zzUnpackCMap(String packed) {
    char [] map = new char[0x10000];
    int i = 0;  /* index in packed string  */
    int j = 0;  /* index in unpacked array */
    while (i < 192) {
      int  count = packed.charAt(i++);
      char value = packed.charAt(i++);
      do map[j++] = value; while (--count > 0);
    }
    return map;
  }


  /**
   * Closes the input stream.
   */
  public final void yyclose() throws java.io.IOException {
    zzAtEOF = true;            /* indicate end of file */
    zzEndRead = zzStartRead;  /* invalidate buffer    */

    if (zzReader != null)
      zzReader.close();
  }


  /**
   * Enters a new lexical state
   *
   * @param newState the new lexical state
   */
  public final void yybegin(int newState) {
    zzLexicalState = newState;
  }


  /**
   * Returns the text matched by the current regular expression.
   */
  public final String yytext() {
    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
  }


  /**
   * Returns the character at position <tt>pos</tt> from the 
   * matched text. 
   * 
   * It is equivalent to yytext().charAt(pos), but faster
   *
   * @param pos the position of the character to fetch. 
   *            A value from 0 to yylength()-1.
   *
   * @return the character at position pos
   */
  public final char yycharat(int pos) {
    return zzBuffer[zzStartRead+pos];
  }


  /**
   * Returns the length of the matched text region.
   */
  public final int yylength() {
    return zzMarkedPos-zzStartRead;
  }


  /**
   * Reports an error that occured while scanning.
   *
   * In a wellformed scanner (no or only correct usage of 
   * yypushback(int) and a match-all fallback rule) this method 
   * will only be called with things that "Can't Possibly Happen".
   * If this method is called, something is seriously wrong
   * (e.g. a JFlex bug producing a faulty scanner etc.).
   *
   * Usual syntax/scanner level error handling should be done
   * in error fallback rules.
   *
   * @param   errorCode  the code of the errormessage to display
   */
  private void zzScanError(int errorCode) {
    String message;
    try {
      message = ZZ_ERROR_MSG[errorCode];
    }
    catch (ArrayIndexOutOfBoundsException e) {
      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
    }

    throw new Error(message);
  } 


  /**
   * Pushes the specified amount of characters back into the input stream.
   *
   * They will be read again by then next call of the scanning method
   *
   * @param number  the number of characters to be read again.
   *                This number must not be greater than yylength()!
   */
  public void yypushback(int number)  {
    if ( number > yylength() )
      zzScanError(ZZ_PUSHBACK_2BIG);

    zzMarkedPos -= number;
  }


  /**
   * Resumes scanning until the next regular expression is matched,
   * the end of input is encountered or an I/O-Error occurs.
   *
   * @return      the next token
   * @exception   java.io.IOException  if any I/O-Error occurs
   */
  public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException {
    int zzInput;
    int zzAction;

    // cached fields:
    int zzCurrentPosL;
    int zzMarkedPosL;
    int zzEndReadL = zzEndRead;
    char [] zzBufferL = zzBuffer;
    char [] zzCMapL = ZZ_CMAP;

    int [] zzTransL = ZZ_TRANS;
    int [] zzRowMapL = ZZ_ROWMAP;
    int [] zzAttrL = ZZ_ATTRIBUTE;

    while (true) {
      zzMarkedPosL = zzMarkedPos;

      zzAction = -1;

      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
  
      zzState = zzLexicalState;


      zzForAction: {
        while (true) {
    
          if (zzCurrentPosL < zzEndReadL)
            zzInput = zzBufferL[zzCurrentPosL++];
          else if (zzAtEOF) {
            zzInput = YYEOF;
            break zzForAction;
          }
          else {
            // store back cached positions
            zzCurrentPos  = zzCurrentPosL;
            zzMarkedPos   = zzMarkedPosL;
            boolean eof = zzRefill();
            // get translated positions and possibly new buffer
            zzCurrentPosL  = zzCurrentPos;
            zzMarkedPosL   = zzMarkedPos;
            zzBufferL      = zzBuffer;
            zzEndReadL     = zzEndRead;
            if (eof) {
              zzInput = YYEOF;
              break zzForAction;
            }
            else {
              zzInput = zzBufferL[zzCurrentPosL++];
            }
          }
          int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
          if (zzNext == -1) break zzForAction;
          zzState = zzNext;

          int zzAttributes = zzAttrL[zzState];
          if ( (zzAttributes & 1) == 1 ) {
            zzAction = zzState;
            zzMarkedPosL = zzCurrentPosL;
            if ( (zzAttributes & 8) == 8 ) break zzForAction;
          }

        }
      }

      // store back cached position
      zzMarkedPos = zzMarkedPosL;

      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
        case 3: 
          { addNullToken(); return firstToken;
          }
        case 23: break;
        case 14: 
          { start = zzMarkedPos-2; yybegin(MLC);
          }
        case 24: break;
        case 5: 
          { addToken(Token.WHITESPACE);
          }
        case 25: break;
        case 18: 
          { addToken(Token.LITERAL_NUMBER_HEXADECIMAL);
          }
        case 26: break;
        case 20: 
          { addToken(Token.ERROR_STRING_DOUBLE);
          }
        case 27: break;
        case 15: 
          { addToken(Token.LITERAL_NUMBER_FLOAT);
          }
        case 28: break;
        case 16: 
          { addToken(Token.RESERVED_WORD);
          }
        case 29: break;
        case 6: 
          { addToken(Token.SEPARATOR);
          }
        case 30: break;
        case 1: 
          { addToken(Token.IDENTIFIER);
          }
        case 31: break;
        case 10: 
          { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken;
          }
        case 32: break;
        case 13: 
          { start = zzMarkedPos-2; yybegin(EOL_COMMENT);
          }
        case 33: break;
        case 4: 
          { addToken(Token.ERROR_STRING_DOUBLE); addNullToken(); return firstToken;
          }
        case 34: break;
        case 17: 
          { yybegin(YYINITIAL); addToken(start,zzStartRead+2-1, Token.COMMENT_MULTILINE);
          }
        case 35: break;
        case 12: 
          { addToken(Token.LITERAL_STRING_DOUBLE_QUOTE);
          }
        case 36: break;
        case 22: 
          { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos;
          }
        case 37: break;
        case 21: 
          { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos;
          }
        case 38: break;
        case 19: 
          { addToken(Token.RESERVED_WORD_2);
          }
        case 39: break;
        case 11: 
          { addToken(Token.ERROR_NUMBER_FORMAT);
          }
        case 40: break;
        case 2: 
          { addToken(Token.LITERAL_NUMBER_DECIMAL_INT);
          }
        case 41: break;
        case 7: 
          { addToken(Token.OPERATOR);
          }
        case 42: break;
        case 8: 
          { 
          }
        case 43: break;
        case 9: 
          { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken;
          }
        case 44: break;
        default: 
          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
            zzAtEOF = true;
            switch (zzLexicalState) {
            case EOL_COMMENT: {
              addToken(start,zzStartRead-1, Token.COMMENT_EOL); addNullToken(); return firstToken;
            }
            case 489: break;
            case YYINITIAL: {
              addNullToken(); return firstToken;
            }
            case 490: break;
            case MLC: {
              addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken;
            }
            case 491: break;
            default:
            return null;
            }
          } 
          else {
            zzScanError(ZZ_NO_MATCH);
          }
      }
    }
  }


}
